# Read the data file and run analyses.

setwd("F:/Experiment Data/Complex Contagion/ComplexContagionDatasets/")
exp3 = read.csv("Exp3_polarizing_no_keep_five_neighbor.csv")

# Code dependent variables.
# Code Self, Schis and Other columns.
exp3$Self = 0
exp3[exp3$userChoice == "Keep_10_cents_and_Do_Not_Donate", c("Self")] = 1
exp3$Schis = 0
exp3[exp3$userChoice == "Schistosomiasis_Control_Initiative", c("Schis")] = 1
exp3$Other = 0
exp3[exp3$Self == 0 & exp3$Schis == 0, c("Other")] = 1

# Code AnyCharity column.
exp3$AnyCharity = 0
exp3[exp3$userChoice != "Keep_10_cents_and_Do_Not_Donate", c("AnyCharity")] = 1

# Code independent variables.
# Code Tie Strength column.
exp3$TieStrength = "High"
exp3[grepl("^AllLo__", exp3$conditionName), c("TieStrength")] = "Low"
#exp3[, c("conditionName", "TieStrength")]

# Code SelfNeighbors, SchisNeighbors and OtherNeighbors columns.
exp3$SelfNeighbors = 0
exp3[grepl("Self_1", exp3$conditionName), c("SelfNeighbors")] = 1
exp3[grepl("Self_2", exp3$conditionName), c("SelfNeighbors")] = 2
exp3[grepl("Self_3", exp3$conditionName), c("SelfNeighbors")] = 3

exp3$SchisNeighbors = 0
exp3[grepl("Schis_1", exp3$conditionName), c("SchisNeighbors")] = 1
exp3[grepl("Schis_2", exp3$conditionName), c("SchisNeighbors")] = 2
exp3[grepl("Schis_3", exp3$conditionName), c("SchisNeighbors")] = 3

exp3$OtherNeighbors = 0
exp3[grepl("Rand_1", exp3$conditionName), c("OtherNeighbors")] = 1
exp3[grepl("Rand_2", exp3$conditionName), c("OtherNeighbors")] = 2
exp3[grepl("Rand_3", exp3$conditionName), c("OtherNeighbors")] = 3

# Influence curves.  First split by tie strength, then together.
# UserChoice is Schis by Schis neighbor count.  Split by Tie Strength.
aggregate(Schis ~ TieStrength + SchisNeighbors, exp3, mean)
aggregate(Schis ~ SchisNeighbors, exp3, mean)

# Means will give us the proportions, but let's also get the raw numerator and denominator.
exp3$countMe = 1
aggregate(Schis ~ TieStrength + SchisNeighbors, exp3, sum)
aggregate(countMe ~ TieStrength + SchisNeighbors, exp3, sum)
table(exp3$SchisNeighbors)

# Fit a line and then predict values.
schisDataToFit = as.data.frame(aggregate(Schis ~ SchisNeighbors, exp3, mean))
linearModel = lm(Schis ~ SchisNeighbors, data=schisDataToFit)
summary(linearModel)
xValues = c(0,1,2,3)
predict(linearModel, list(SchisNeighbors=xValues))


